import java.util.ArrayList;
import java.util.List;

public class demo2 {
    List<String>list=new ArrayList<>();
    StringBuilder binary=new StringBuilder();
    //不能修改题目给的参数
    public List<String> binaryTreePaths(TreeNode root) {
        dfs(root,binary);
        return list;
    }
    //加入剪枝
    public void dfs(TreeNode root,StringBuilder binary){
        //用于回溯
        StringBuilder newpath=new StringBuilder(binary);
        if(root.left==null&&root.right==null){
            newpath.append(root.val);
            list.add(newpath.toString());
            return ;
        }else{
            newpath.append(root.val);
            newpath.append("->");
        }
        if(root.left!=null) dfs(root.left,newpath);
        if(root.right!=null) dfs(root.right,newpath);
        //一个节点前序遍历完成将binary回到需要的长度
    }
}
